package com.wicket.okrframework.integration.dto;

import com.wicket.okrframework.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Objects;
import lombok.Data;

@Data
public class OrgDto extends BaseDto implements Serializable {

  /**
   * 组织ID:
   */
  @ApiModelProperty("组织ID")
  private String organizationId;

  /**
   * 组织标识:
   */
  @ApiModelProperty("组织标识")
  private String organizationCode;

  /**
   * 组织编号:
   */
  @ApiModelProperty("组织编号")
  private String organizationNumber;

  /**
   * 组织名称:
   */
  @ApiModelProperty("组织名称")
  private String organizationName;

  /**
   * 是否最高组织:
   */
  @ApiModelProperty("是否最高组织")
  private String isHighOrg;

  /**
   * 空间组织架构模式:
   */
  @ApiModelProperty("空间组织架构模式")
  private String orgStructureModel;

  /**
   * 是否开启系统对接:
   */
  @ApiModelProperty("是否开启系统对接")
  private String isIntergration;

  /**
   * 是否启用流程审批:
   */
  @ApiModelProperty("是否启用流程审批")
  private String isOpenApprovalProcess;

  /**
   * 是否允许导入:
   */
  @ApiModelProperty("是否允许导入")
  private String isAllowImport;

  /**
   * 是否冻结:
   */
  @ApiModelProperty("是否冻结")
  private String status;

  /**
   * 创建于空间ID:
   */
  @ApiModelProperty("创建于空间ID")
  private String spaceId;

  /**
   * 创建于联盟应用ID:
   */
  @ApiModelProperty("创建于联盟应用ID")
  private String appId;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    OrgDto that = (OrgDto) o;
    return (
      organizationId == that.organizationId &&
      organizationCode == that.organizationCode &&
      organizationNumber == that.organizationNumber &&
      organizationName == that.organizationName &&
      isHighOrg == that.isHighOrg &&
      orgStructureModel == that.orgStructureModel &&
      isIntergration == that.isIntergration &&
      isOpenApprovalProcess == that.isOpenApprovalProcess &&
      isAllowImport == that.isAllowImport &&
      status == that.status &&
      spaceId == that.spaceId &&
      appId == that.appId
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      organizationId,
      organizationCode,
      organizationNumber,
      organizationName,
      isHighOrg,
      orgStructureModel,
      isIntergration,
      isOpenApprovalProcess,
      isAllowImport,
      status,
      spaceId,
      appId
    );
  }
}
